package com.itany.corejava.code08_常用类.包装类;

/**
 * @author 石小俊
 * @version 1.0
 * @date 2023年03月16日 16:49
 */
public class Test02_装箱与拆箱 {
    public static void main(String[] args) {
        int i = 10;
        // 装箱
        // JDK5之前需要手动装箱
        // 通过构造方法进行装箱
        Integer integer = new Integer(i);
        // JDK5之后会自动装箱
        Integer integer2 = i;

        // 拆箱
        // JDK5之前需要手动拆箱
        // 通过xxxValue()进行拆箱
        int i1 = integer.intValue();
        // JDK5之后需要自动拆箱
        int i2 = integer;

        Integer integer3 = new Integer(10);
        Integer integer4 = new Integer(10);
        System.out.println(integer3 == integer4); // false

        // 在进行运算时发生了自动拆箱的操作
        // 此时比较的双方都是int类型
        // 比较的是栈中的值,其值都是10,此时相当于i2,因此返回true
        System.out.println(i == integer3); // true

        // 由于int不是Object的子类
        // 此时需要进行自动装箱的操作,将10变为Integer
        // 子类的对象指向父类的引用,多态
        // 即:此时进行了装箱+多态的操作
        Object obj = 10;
    }
}
